package com.example.tys.daggermvp.utils;

import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.DisplayMetrics;
import android.util.TypedValue;

import com.example.tys.daggermvp.Application.DaggerApplication;
import com.example.tys.daggermvp.MyApp;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * @author tys
 * @date 2018/4/29
 */

public class DisplayUtil {

    /**
     * 将像素密度转换成对应机型的像素值
     *
     * @param dp 像素密度值
     * @return 转换后像素值
     */
    public static float dp2px(int dp) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getMetrics());
    }

    /**
     * 将像素转换成对应机型的像素密度值
     *
     * @param px 像素值
     * @return 转换后的像素密度值(dp)
     */
    public static float px2dp(int px) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, px, getMetrics());
    }


    /**
     * 格式化时间。
     *
     * @param format 格式化输出的样式，为null则使用默认样式  默认：yyyy/MM/dd HH:mm
     * @param longTime 时间毫秒值 <=0 返回 “”
     * @return 格式化后的字符串
     */
    public static String formatDate(@Nullable String format, long longTime) {
        if (longTime <= 0) {
            return "";
        } else {
            SimpleDateFormat sf = new SimpleDateFormat(TextUtils.isEmpty(format) ? "yyyy/MM/dd HH:mm" : format, Locale.US);
            return sf.format(new Date(longTime));
        }
    }

    /**
     * String类型的时间转换Date{@link java.util.Date}
     *
     * @param format     格式 默认 yyyy/MM/dd HH:mm
     * @param stringTime 带转换的字符串
     * @return 格式化后的Date, 转换异常返回null
     */
    public static @Nullable
    Date stringToData(@Nullable String format, String stringTime) {
        try {
            SimpleDateFormat sf = new SimpleDateFormat(TextUtils.isEmpty(format) ? "yyyy/MM/dd HH:mm" : format, Locale.US);
            return sf.parse(stringTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }


    private static DisplayMetrics getMetrics() {
        return MyApp.getInstance().getResources().getDisplayMetrics();
    }

}
